Перейти к основному содержимому

Обновление до v1.5

Поддержка dbt v1.3 – v1.7 будет прекращена January 31, 2027

Версии dbt v1.3-v1.7 достигли конца жизненного цикла, и их поддержка будет прекращена January 31, 2027. После этой даты dbt Labs больше не будет поддерживать эти версии, и они будут удалены из dbt platform.

До этой даты переведите свои окружения на поддерживаемую версию dbt или канал выпусков, чтобы продолжать получать обновления и поддержку. Подробнее см. в руководстве Переход с устаревших версий dbt.

dbt v1.5 — выпуск с новыми возможностями, включающий два важных дополнения:

  1. Управление моделями — доступ, контракты, версии — первый этап поддержки развертываний с несколькими проектами
  2. Точка входа на Python для программного вызова, с теми же возможностями, что и CLI

Полезные ресурсы​

Что нужно знать перед обновлением​

dbt Labs стремится обеспечивать обратную совместимость для всех версий 1.x, за исключением изменений, явно указанных ниже. Если после обновления вы столкнетесь с ошибкой, сообщите нам об этом, создав issue.

Изменения поведения​

Почему меняется прежнее поведение?

Этот выпуск включает важные новые возможности, а также переработку CLI и процесса инициализации dbt-core. В рамках рефакторинга внутренних механизмов и перехода с argparse на click мы внесли ряд изменений в конфигурацию времени выполнения. В результате параметры конфигурации стали более согласованными и практичными, а кодовая база — более понятной.

Везде, где это возможно, мы будем сохранять обратную совместимость и выводить предупреждения об устаревании как минимум в течение одной минорной версии, прежде чем удалять старую функциональность. В таких случаях мы по-прежнему оставляем за собой право полностью удалить обратную совместимость для устаревшей функциональности в одной из будущих минорных версий v1.x dbt-core.

Настройка log-path и target-path в dbt_project.yml объявлена устаревшей для согласованности с другими настройками времени выполнения, относящимися к конкретному вызову (dbt-labs/dbt#6882). Вместо этого рекомендуем задавать их через переменную окружения или флаг CLI.

Команда dbt list теперь по умолчанию выводит сообщения журнала уровня INFO. Ранее команда list (и только команда list) выводила в stdout сообщения журнала начиная с уровня WARN, чтобы ее результаты можно было передавать через конвейер в jq, файл или другой процесс. Для этого теперь можно использовать любой из следующих параметров:

  • dbt list --log-level warn (рекомендуется; соответствует прежнему поведению по умолчанию)
  • dbt list --quiet (подавляет все сообщения журнала ниже уровня ERROR, кроме сообщений, выводимых через "print", и результатов list)

Следующие переменные окружения переименованы для согласованности с соглашением, используемым для всех остальных параметров:

  • DBT_DEFER_TO_STATE → DBT_DEFER
  • DBT_FAVOR_STATE_MODE → DBT_FAVOR_STATE
  • DBT_NO_PRINT → DBT_PRINT
  • DBT_ARTIFACT_STATE_PATH → DBT_STATE

Как описано в dbt-labs/dbt#7169, параметры командной строки, которые раньше могли игнорироваться без каких-либо сообщений, больше не будут игнорироваться молча. Дополнительные примеры исправляемого поведения см. в dbt-labs/dbt#7158 и dbt-labs/dbt#6800.

Пустой ключ tests: в YAML-файле теперь вызывает ошибку валидации, а не пропускается без уведомления. Чтобы устранить ошибку, удалите пустой ключ tests: или явно задайте для него пустой список:

#  ❌ это вызовет ошибку
models:
- name: my_model
tests:
config: ...

# ✅ так допустимо
models:
- name: my_model
tests: [] # todo! добавить тесты позже
config: ...

Некоторые параметры, которые раньше можно было указывать после подкоманды, теперь можно указывать только перед ней. Это также относится к обратным вариантам параметров, например --write-json и --no-write-json. Список затронутых параметров:

Список затронутых параметров
--cache-selected-only | --no-cache-selected-only
--debug, -d | --no-debug
--deprecated-print | --deprecated-no-print
--enable-legacy-logger | --no-enable-legacy-logger
--fail-fast, -x | --no-fail-fast
--log-cache-events | --no-log-cache-events
--log-format
--log-format-file
--log-level
--log-level-file
--log-path
--macro-debugging | --no-macro-debugging
--partial-parse | --no-partial-parse
--partial-parse-file-path
--populate-cache | --no-populate-cache
--print | --no-print
--printer-width
--quiet, -q | --no-quiet
--record-timing-info, -r
--send-anonymous-usage-stats | --no-send-anonymous-usage-stats
--single-threaded | --no-single-threaded
--static-parser | --no-static-parser
--use-colors | --no-use-colors
--use-colors-file | --no-use-colors-file
--use-experimental-parser | --no-use-experimental-parser
--version, -V, -v
--version-check | --no-version-check
--warn-error
--warn-error-options
--write-json | --no-write-json

Кроме того, некоторые параметры, которые раньше можно было указывать перед подкомандой, теперь можно указывать только после нее. Начиная с v1.5 любой параметр, не включенный в приведенный выше список, должен указываться после подкоманды. Например, --profiles-dir.

Встроенный макрос collect_freshness теперь возвращает весь объект response, а не только результат table. Если вы используете собственную реализацию collect_freshness, убедитесь, что она тоже возвращает объект response; иначе некоторые команды dbt никогда не завершатся. Например:

{{ return(load_result('collect_freshness')) }}

И наконец: встроенный макрос generate_alias_name теперь включает логику обработки версионируемых моделей. Если в вашем проекте макрос generate_alias_name переопределен с собственной логикой и вы хотите начать использовать версии моделей, вам потребуется обновить логику этого макроса. Обратите внимание: это не обязательное условие обновления до v1.5, а лишь требование для использования новой возможности. Тем не менее мы рекомендуем сделать это при обновлении, независимо от того, планируете ли вы использовать версии моделей завтра или в далеком будущем.

Аналогично, если в вашем проекте макрос ref переопределен с собственной логикой, вам потребуется обновить ее, как описано здесь.

Для пользователей артефактов dbt (метаданных)​

Версия схемы manifest будет обновлена до v9. Конкретные изменения:

  • Добавлен ключ верхнего уровня groups
  • Добавлены атрибуты узлов верхнего уровня access, constraints, version, latest_version для моделей
  • Добавлен атрибут уровня столбца constraints
  • Добавлены настройки узлов group и contract
  • Для поддержки версий моделей тип refs изменен с List[List[str]] на List[RefArgs], с вложенными ключами name: str, package: Optional[str] = None и version: Union[str, float, NoneType] = None).

Для разработчиков и сопровождающих плагинов адаптеров​

Чтобы получить более подробную информацию и задать вопросы, ознакомьтесь с обсуждением на GitHub и оставьте комментарий: dbt-labs/dbt#7213.

Новая и обновленная документация​

Управление моделями​

Первый этап поддержки масштабных развертываний dbt в нескольких проектах с четко определенными зонами ответственности и границами интерфейсов. Прочитайте об управлении моделями: все эти возможности появились в v1.5.

Обновленный CLI​

Компилируйте и предварительно просматривайте модели dbt и dbt-SQL-запросы с --inline в CLI с помощью:

Методы выбора узлов могут использовать подстановочные символы в стиле Unix для выбора узлов, соответствующих шаблону:

dbt ls --select "tag:team_*"

А еще (!): впервые появилась точка входа для программного вызова с теми же возможностями, что и команды CLI.

Выполните dbt --help, чтобы увидеть новую, улучшенную справку :)

Кратко о других изменениях​

Нашли ошибку?

0
Loading